我們現在要結合之前所用到的部分,Day7 的查詢價格以及用Django當作我們的資料庫去儲存我們要的資料。
這邊主要是為了配合樣板,使用者按下後會顯示近期查詢過的幣種,我們將資料儲存在Django。
第3行,用來找資料庫裡曾經查詢過的幣種,最後用list方式回傳給試用者。有興趣或者不知道django怎麼用的可以到文件看看。
第11行,因為linebot不只有一個使用者在用,所以在資料庫可能會有很多人的資料,為了區分將每筆資料都有對應的uid,才知道是哪個使用者查詢過這個幣種。
第12~17行,先去對使用者輸入的字串做查詢,如果有找到這個幣種,會去資料庫新增一筆瀏覽紀錄,但如果已經存在了就不會新增。
elif event.message.text == "近期瀏覽":
response = list()
coin_list = Crypto.objects.filter(uid=uid)
for coin in coin_list:
response.append(coin.coin_name)
line_bot_api.reply_message( # 回復傳入的訊息文字
event.reply_token,
TextSendMessage(text=str(response))
)
else:
user_input = event.message.text
get_coin_data = client.get_symbol_ticker(symbol=user_input)
if get_coin_data:
response = get_coin_data
coin_exist = Crypto.objects.filter(uid = uid, coin_name = user_input)
if not coin_exist:
Crypto.objects.create(uid = uid, coin_name = user_input)
else:
response = "請輸入正確的幣種名稱"
line_bot_api.reply_message( # 回復傳入的訊息文字
event.reply_token,
TextSendMessage(text=str(response))
這邊我隨便輸入三個我想要查看的幣種名稱,如果有找到便會回傳名稱和當前價格。
這個時候來到http://127.0.0.1:8000/admin後台來查看已經新增的幣種,如果忘記後台要怎麼去可以參考Day22
再來就是呼叫樣板並點擊“近期瀏覽”,就可以看到下面的結果。
這邊我近期瀏覽的type是用message的方式,如果對這部分不了解的可以再去Day24看一下。